package com.situ.fly.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.situ.fly.dao.UserDao;
import com.situ.fly.entity.User;
import com.situ.fly.util.MD5Util;

/**
 * UserService接口的实现类
 * 需要实现UserService接口中定义的所有的方法
 * @author bobzyh
 * 
 * 	1. 使用implements关键字实现接口
 *	2. 实现接口中定义的所有的抽象方法
 *	3. 需要在类前添加@Service注解
 *	4. 完善方法的实现
 */
@Service
public class UserServiceImpl implements UserService{

	@Autowired	
	// spring的属性自动注入, 在Spring的Bean容器中, 
	// 找到一个类型匹配的对象, 交给userDao变量.
	private UserDao userDao;
	
	@Override
	public int reg(User user, String repassword) {
		// 1. 验证两次密码是否一样
		if (!repassword.equals(user.getPassword())) {
			return -1;
		}
		// 2. 验证账号是否可用
		if (userDao.selectByUsername(user.getUsername()) != null) {
			return -2;
		}
		// 3. 验证昵称是否可用
		if (userDao.selectByNickname(user.getNickname()) != null) {
			return -3;
		}
		
		// 4. 密码MD5加密
		user.setPassword(MD5Util.getMD5(user.getPassword()));
		
		// 5. 将注册信息保存到数据库
		return userDao.insert(user);
	}

	@Override
	public User login(User user) throws Exception {
		// 1. 验证账号
		User selectUser = userDao.selectByUsername(user.getUsername());
		if (selectUser == null) {
			// 账号不存在
			// 登录失败	
			// 结束方法的执行: return   抛出异常
			throw new Exception("账号不存在,请重新登录!!!");
		}
		
		// 2. 密码是否正确
		if (!selectUser.getPassword()	// 从数据库中查询出的密文
				.equals(MD5Util.getMD5(user.getPassword()) )) {
			// 密码不正确
			throw new Exception("密码不正确,请重新登录!!!");
		}
		
		// 3. 账号被封
		if (selectUser.getStatus() == 1) {
			throw new Exception("账号已被禁用,请联系管理员!!!");
		}
		
		return selectUser;
	}

}
